home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Light ROM 1
/
LIGHT-ROM 1 (Amiga Library Services)(1994).iso
/
ffdisks
/
d880.lha
/
Oberon
/
O3Demo2.lzh
/
Definitions
/
Lists.def
< prev
next >
Wrap
Text File
|
1993-01-15
|
1KB
|
45 lines
DEFINITION Lists;
IMPORT
BT := BasicTypes;
TYPE
NodePtr = POINTER TO Node;
Node = RECORD (BT.ANYDesc)
next : NodePtr;
prev : NodePtr;
END;
ListPtr = POINTER TO List;
List = RECORD (BT.COLLECTIONDesc)
head : NodePtr;
tail : NodePtr;
PROCEDURE (list:ListPtr) Add(x: BT.ANY);
PROCEDURE (list:ListPtr) Remove(x: BT.ANY);
PROCEDURE (list:ListPtr) nbElements(): LONGINT;
PROCEDURE (list:ListPtr) isEmpty(): BOOLEAN;
PROCEDURE (list:ListPtr) Do(p: BT.DoProc; par: BT.ANY);
END;
DoProc = PROCEDURE(n: NodePtr);
PROCEDURE Init(VAR list: List);
PROCEDURE AddHead(VAR list: List; n: NodePtr);
PROCEDURE AddTail(VAR list: List; n: NodePtr);
PROCEDURE Remove(VAR list: List; n: NodePtr);
PROCEDURE RemHead(VAR list: List): NodePtr;
PROCEDURE RemTail(VAR list: List): NodePtr;
PROCEDURE AddBefore(VAR list: List; n, x: NodePtr);
PROCEDURE AddBehind(VAR list: List; n, x: NodePtr);
PROCEDURE Empty(VAR list: List): BOOLEAN;
PROCEDURE CountElements(VAR list: List): LONGINT;
PROCEDURE DoForward(VAR list: List; proc: DoProc);
PROCEDURE DoBackward(VAR list: List; proc: DoProc);
PROCEDURE Next(VAR n: NodePtr): BOOLEAN;
PROCEDURE Previous(VAR n: NodePtr): BOOLEAN;
PROCEDURE Succ(VAR n: NodePtr);
PROCEDURE Pred(VAR n: NodePtr);
PROCEDURE Head(VAR list: List): NodePtr;
PROCEDURE Tail(VAR list: List): NodePtr;
END Lists.